package com.campus.mapper;

import com.campus.annotation.AutoFill;
import com.campus.enumeration.OperationType;
import com.campus.pojo.dto.SportsVenuePageQueryDTO;
import com.campus.pojo.entity.SportsVenue;
import com.campus.pojo.vo.SportsVenueVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface SportsVenueMapper {
    
    /**
     * 根据名称查询体育场馆
     * @param name 体育场馆名称
     * @return SportsVenue 体育场馆实体对象
     */
    @Select("SELECT * FROM sports_venue WHERE name = #{name}")
    SportsVenue getByName(String name);

    /**
     * 插入新的体育场馆
     * @param sportsVenue 体育场馆实体对象
     */
    @Insert("INSERT INTO sports_venue(name, location, capacity,  status, create_time, update_time) " +
            "VALUES(#{name}, #{location}, #{capacity},  #{status}, #{createTime}, #{updateTime})")
    @AutoFill(value = OperationType.INSERT)
    void insert(SportsVenue sportsVenue);

    /**
     * 根据ID查询体育场馆
     * @param id 体育场馆ID
     * @return SportsVenue 体育场馆实体对象
     */
    @Select("SELECT * FROM sports_venue WHERE id = #{id}")
    SportsVenue getById(Long id);

    /**
     * 批量删除体育场馆
     * @param ids 体育场馆ID集合
     */
    void deleteByIds(List<Long> ids);

    /**
     * 分页查询体育场馆
     * @param sportsVenuePageQueryDTO 分页查询条件
     * @return Page<SportsVenueVO> 分页结果
     */
    Page<SportsVenueVO> pageQuery(SportsVenuePageQueryDTO sportsVenuePageQueryDTO);

    /**
     * 更新体育场馆信息
     * @param sportsVenue 体育场馆实体对象
     */
    @AutoFill(value = OperationType.UPDATE)
    void update(SportsVenue sportsVenue);
}
